<?php
namespace App\Controller\Admin;

use App\Request\AdminRequest;
use App\Repository\AdminRepository;

use League\Flysystem\Filesystem;

class IndexController extends Controller
{
    // 登陆
    public function login(AdminRequest $request)
    {
        // 开始登陆
        if($token = AdminRepository::make()->login($request->validated()))
        {
            return $token;
        }
        
        $this->error('login');
    }
    
    // 信息
    public function info()
    {
        return $this->auth();
    }
    
    // 上传图片
    public function upload(Filesystem $filesystem)
    {
        if(!$this->request->hasFile('file'))
        {
            $this->error('upload');
        }
        
        $file = $this->request->file('file');
        
        // 检查文件
        if(!in_array($file->getExtension(), ['jpeg', 'jpg', 'gif', 'png']))
        {
            $this->error('upload_ext');
        }
        
        // 真实文件
        $stream = fopen($file->getRealPath(), 'r+');
        
        // 文件内容
        $content = fread($stream, filesize($file->getRealPath()));
        
        // 关闭文件
        fclose($stream);
        
        // 路径
        $url = '/upload/system/' . date('Y-m/d') . '/' . md5($content) . '.' . $file->getExtension();
        
        // 如果文件存在将不上传
        if(!$filesystem->has($url))
        {
            // 上传
            $filesystem->write($url, $content);
        }
        
        return ['url' => $url];
    }
    
    // 上传文件
    public function uploadFile(Filesystem $filesystem)
    {
        if(!$this->request->hasFile('file'))
        {
            $this->error('upload');
        }
        
        $file = $this->request->file('file');
        
        // 检查文件
        if(!in_array($file->getExtension(), ['mp4', 'f4v', 'flv', 'mpeg', 'avi']))
        {
            $this->error('upload_ext');
        }
        
        // 真实文件
        $stream = fopen($file->getRealPath(), 'r+');
        
        // 文件内容
        $content = fread($stream, filesize($file->getRealPath()));
        
        // 关闭文件
        fclose($stream);
        
        // 路径
        $url = '/upload/file/' . date('Y-m/d') . '/' . md5($content) . '.' . $file->getExtension();
        
        // 如果文件存在将不上传
        if(!$filesystem->has($url))
        {
            // 上传
            $filesystem->write($url, $content);
        }
        
        return ['url' => $url];
    }
}
